#include <gtest/gtest.h>

#include "pugixml/pugixml.hpp"

using namespace std;
void BuildMap(const pugi::xml_node & root, const string & prefix) {
  pugi::xml_node node = root.first_child();
  while(node) {
    if (node.first_child()) {
      BuildMap(node, prefix.empty() ? node.name() : prefix + '.' + node.name());
    } else {
      cout << prefix << node.name() << " = " << node.value() << endl;
    }
    node = node.next_sibling();
  }
}

TEST(pugixml, basic) {
  pugi::xml_document doc;
  string xml = "<f v=\"1.0\" type=\"blogPublish\">"
  "<time>1269246798271</time>"
  "<type>601</type>"
  "<origin>"
    "<type>1</type>"
    "<url>source.url</url>"
    "<title>fake title</title>"
    "<image>xxx.gif</image>"
  "</origin>"
  "<from>"
    "<id>232690766</id>"
    "<name>霍克明</name>"
    "<tinyimg>hd30/20071008/14/29/tiny_4723d170.jpg</tinyimg>"
  "</from>"

  "<blog>"
    "<id>453813878</id>"
    "<title>&lt;span&gt;比法律更厉害的东西，你猜是什么&lt;/span&gt;</title>"
    "<digest>&lt;span&gt;有人说，这个世界上没有比瘾更严重的东西了，比如有人有偷东西的瘾，明知道&lt;/span&gt;&lt;wbr /&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;&lt;span&gt;要判刑，管不住自己的手。有人有暴露的瘾，见到单身的女人就把家伙亮出来，&lt;/span&gt;&lt;wbr /&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;&lt;span&gt;明知道被逮住就是一阵胖揍。再比如，烟瘾，酒瘾。等等，烟瘾，酒瘾，还真干&lt;/span&gt;&lt;wbr /&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;&lt;span&gt;不过一样东西，就是你的老婆。我本来不抽烟，后来我的领导关怀我，把我发展&lt;/span&gt;&lt;wbr /&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;&lt;span&gt;起来了。抽烟。后来市场部门来了个领导，也抽烟。但是他们都有一特牛的特征&lt;/span&gt;&lt;wbr /&gt;&lt;span class=&quot;word_break&quot;&gt;&lt;/span&gt;&lt;span&gt;。快下班不...&lt;/span&gt;</digest>"
    "<url>http://blog.renren.com/GetEntry.do?id=453813878&amp;owner=232690766</url>"
  "</blog>"
"</f>";

  if (doc.load(xml.c_str())) {
    BuildMap(doc, "");
  }
}

int main(int argc, char** argv){
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();

}

